//
//  SXPemoticonManger.swift
//  weibo
//
//  Created by shixinPeng on 16/3/9.
//  Copyright © 2016年 shixinPeng. All rights reserved.
//

import UIKit
/*
用来管理表情数据
*/
class SXPemoticonManger: NSObject {

    static var recentArray:[SXPEmoticonModel] = [SXPEmoticonModel]()
    static var defaultArray:[SXPEmoticonModel] = SXPemoticonManger.addEmoticonDataWithPath("com.sina.default")
    static var emojiArray:[SXPEmoticonModel] = SXPemoticonManger.addEmoticonDataWithPath("com.apple.emoji")
    static var lxhArray:[SXPEmoticonModel] = SXPemoticonManger.addEmoticonDataWithPath("com.sina.lxh")
    
    ///添加到最近的表情数组中
    class func addRecentBtnArray(emotion:SXPEmoticonModel) {
        //查重
        if !recentArray.contains(emotion){
            //recentArray.append(emotion)
            //添加到第一位 插入
            recentArray.insert(emotion, atIndex: 0)
            
            //设置上限
            if recentArray.count > 20{
                recentArray.removeLast()
            }
            
            
        }
    }
    
    
    
    
    
    
    
///  对外提供的方法,提供最终的数据,是一个三维数组
    class func getEmoticonData() -> [[[SXPEmoticonModel]]]{
        
        return [pageArray(recentArray),SXPemoticonManger.pageArray(defaultArray),SXPemoticonManger.pageArray(emojiArray),SXPemoticonManger.pageArray(lxhArray)]
    }
    ///  获取每个表情文件的方法
    ///
    ///  - parameter package: 表情文件的文件名
    ///
    ///  - returns: 返回一个表情模型的数组
    class private func addEmoticonDataWithPath(package:String) ->[SXPEmoticonModel] {
        //获取bundle文件路径
        let bundlePath = NSBundle.mainBundle().pathForResource("Emoticons", ofType: "bundle")
        //获取文件夹得路径
        let PackPagePath = (bundlePath! as NSString).stringByAppendingPathComponent(package)
        
        //获取info.plist文件路径
        let infoPath = (PackPagePath as NSString).stringByAppendingPathComponent("info.plist")
        
        //printLog(infoPath)
        //解析数据
        let dic = NSDictionary(contentsOfFile: infoPath)
        //获取emoticons的value的值 这里是一个字典数组
        let emoticons = dic!["emoticons"] as! [[String: NSObject]]
        
        //定义一个临时数组,存放模型数组
        var emoArray:[SXPEmoticonModel] = [SXPEmoticonModel]()
        
        //遍历这个数组,转成模型数组
        for emoticon in emoticons{
            //字典转模型
            let model:SXPEmoticonModel = SXPEmoticonModel(dict: emoticon)
            //把路径也传递过去,
            model.imagPath = PackPagePath
            
            emoArray.append(model)
            
        }
        
        //printLog("\(emoArray)//n")
        return emoArray
    }
    
    //表情分页显示 需求:每页20个表情,
    class  func pageArray(emoArray:[SXPEmoticonModel]) -> [[SXPEmoticonModel]]{
        
        //1.首先要看一共可以分成几页
    
       let pag = (emoArray.count-1)/20 + 1
        //2.下面要做的就是把传入的数组截取成若干个模型数组
        var newArray:[[SXPEmoticonModel]] = [[SXPEmoticonModel]]()

        for i in 0..<pag{//把每一页的都切割完毕
            
            var len = 20
            if i == pag - 1{//最后一页
                len = emoArray.count - i * 20
            }
            let tempArray:[SXPEmoticonModel] = (emoArray as NSArray).subarrayWithRange(NSMakeRange(i*20, len)) as! [SXPEmoticonModel]
            
            newArray.append(tempArray)
        }
    
        
       return newArray
    }
    
    
}
